package com.skyd.core.android;

import android.widget.EditText;

/**
 * 提供对于EditText的操作方法
 * @author SkyD
 *
 */
public class EditTextOperation {
	/**
	 * 获取当前所选的文字
	 * @param c EditText对象
	 * @return 所选择的文字
	 */
	public static String getSelectedText(EditText c)
	{
		int s=c.getSelectionStart();
		int e=c.getSelectionEnd();
		int a=Math.min(s, e);
		int b=Math.max(s, e);
		return c.getText().subSequence(a, b).toString();
	}
	
	/**
	 * 替代选定的文字为新文字，如果未选定则在光标处插入新文字，操作完毕后光标移到新文字之后
	 * @param c EditText对象
	 * @param NewText 替换的新文字
	 * @param SelectNewText 替代后选定替换文字
	 * @return 字符串的长度变化，如：8表示长度增加了8，-3表示长度减少了3
	 */
	public static int replaceSelectedText(EditText c,String NewText,boolean SelectNewText)
	{
		int s=c.getSelectionStart();
		int e=c.getSelectionEnd();
		int a=Math.min(s, e);
		int b=Math.max(s, e);
		c.setSelection(0, 0);
		int o= replaceRangeToNewText(c,a,b-a,NewText);
		if(SelectNewText)
		c.setSelection(a, a+NewText.length());
		else c.setSelection(a+NewText.length(), a+NewText.length());
		return o;
	}
	
	/**
	 * 替代选定的文字为新文字，如果未选定则在光标处插入新文字，操作完毕后光标移到新文字之后
	 * @param c EditText对象
	 * @param NewText 替换的新文字
	 * @return 字符串的长度变化，如：8表示长度增加了8，-3表示长度减少了3
	 */
	public static int replaceSelectedText(EditText c,String NewText)
	{
		return replaceSelectedText(c, NewText,true);
	}
	
	/**
	 * 替代指定范围为新文字
	 * @param c EditText对象
	 * @param startIndex 范围起始索引
	 * @param length 范围长度，不得为负数
	 * @param NewText 替换的新文字
	 * @return 字符串的长度变化，如：8表示长度增加了8，-3表示长度减少了3
	 */
	public static int replaceRangeToNewText(EditText c,int startIndex,int length,String NewText)
	{
		c.setText(c.getText().subSequence(0, startIndex)+NewText+c.getText().subSequence(startIndex+length, c.getText().length()));
		return NewText.length()-length;
	}
}
